import {
  BwStyleFontWeightEnum,
  BwStyleMarginEnum,
  BwStylePaddingEnum,
  BwStyleAlignItemsEnum,
  BwStyleBorderStyleEnum,
  BwStyleCursorEnum,
  BwStyleDisplayEnum,
  BwStyleFlexDirectionEnum,
  BwStyleFontStyleEnum,
  BwStyleJustifyContentEnum,
  BwStyleTextAlignEnum,
  BwStyleTextDecorationEnum,
  BwStyleFontFamilyEnum,
  BwStyleBackgroundAttachmentEnum,
  BwStyleBackgroundRepeatEnum,
  BwStyleBackgroundSizeEnum,
} from '../enum'

/** 通用渲染样式模型 */
export interface BwStyleActiveProps
  extends BwStyleActiveFontModel,
    BwStyleActiveFlexModel,
    BwStyleActiveMarginModel,
    BwStyleActivePaddingModel,
    BwStyleActiveBorderModel,
    BwStyleActiveRadiusModel,
    BwStyleActiveShadowModel,
    BwStyleActiveBackgroundModel {
  /** 宽度 */
  activeWidth?: string

  /** 高度 */
  activeHeight?: string

  /** 显示 */
  activeDisplay?: BwStyleDisplayEnum | string

  /** flex-grow */
  activeFlexGrow?: number

  /** 不透明度 */
  activeOpacity?: number

  /** 鼠标手势 */
  activeCursor?: BwStyleCursorEnum
}

/** 字体相关样式 */
export interface BwStyleActiveFontModel {
  /** 字体 */
  activeFontFamily?: BwStyleFontFamilyEnum

  /** 字重 */
  activeFontWeight?: BwStyleFontWeightEnum

  /** 字体样式 */
  activeFontStyle?: BwStyleFontStyleEnum

  /** 颜色 */
  activeColor?: string

  /** 字体大小 */
  activeFontSize?: string

  /** 行高 */
  activeLineHeight?: string

  /** 对齐 */
  activeTextAlign?: BwStyleTextAlignEnum

  /** 修饰 */
  activeTextDecoration?: BwStyleTextDecorationEnum
}

/** 弹性盒子相关样式 */
export interface BwStyleActiveFlexModel {
  /** 主轴方向 */
  activeFlexDirection?: BwStyleFlexDirectionEnum

  /** 侧轴（纵轴）方向上的对齐方式 */
  activeAlignItems?: BwStyleAlignItemsEnum

  /** 主轴上的子元素排列方式 */
  activeJustifyContent?: BwStyleJustifyContentEnum
}

/** 外边距相关样式 */
export interface BwStyleActiveMarginModel {
  /** 左外边距 */
  activeMarginLeft?: BwStyleMarginEnum | string

  /** 上外边距 */
  activeMarginTop?: BwStyleMarginEnum | string

  /** 右外边距 */
  activeMarginRight?: BwStyleMarginEnum | string

  /** 下外边距 */
  activeMarginBottom?: BwStyleMarginEnum | string
}

/** 内边距相关样式 */
export interface BwStyleActivePaddingModel {
  /** 左内边距 */
  activePaddingLeft?: BwStylePaddingEnum | string

  /** 上内边距 */
  activePaddingTop?: BwStylePaddingEnum | string

  /** 右内边距 */
  activePaddingRight?: BwStylePaddingEnum | string

  /** 下内边距 */
  activePaddingBottom?: BwStylePaddingEnum | string
}

/** 边框相关样式 */
export interface BwStyleActiveBorderModel {
  /** 边框左 线样式 */
  activeBorderLeftStyle?: BwStyleBorderStyleEnum
  /** 边框左 宽度 */
  activeBorderLeftWidth?: string
  /** 边框左 颜色 */
  activeBorderLeftColor?: string
  /** 边框上 线样式 */
  activeBorderTopStyle?: BwStyleBorderStyleEnum
  /** 边框上 宽度 */
  activeBorderTopWidth?: string
  /** 边框上 颜色 */
  activeBorderTopColor?: string
  /** 边框右 线样式 */
  activeBorderRightStyle?: BwStyleBorderStyleEnum
  /** 边框右 宽度 */
  activeBorderRightWidth?: string
  /** 边框右 颜色 */
  activeBorderRightColor?: string
  /** 边框下 线样式 */
  activeBorderBottomStyle?: BwStyleBorderStyleEnum
  /** 边框下 宽度 */
  activeBorderBottomWidth?: string
  /** 边框下 颜色 */
  activeBorderBottomColor?: string
}

/** 圆角相关样式 */
export interface BwStyleActiveRadiusModel {
  /** 圆角左上角*/
  activeBorderTopLeftRadius?: string

  /** 圆角右上角*/
  activeBorderTopRightRadius?: string

  /** 圆角左下角*/
  activeBorderBottomLeftRadius?: string

  /** 圆角右下角*/
  activeBorderBottomRightRadius?: string
}

/** 阴影相关样式 */
export interface BwStyleActiveShadowModel {
  /** 颜色 */
  activeShadowColor?: string
  /** x轴水平方向偏移量 */
  activeShadowX?: string
  /** y轴竖直方向偏移量 */
  activeShadowY?: string
  /** 阴影模糊半径 */
  activeShadowBlur?: string
  /** 阴影扩展半径 */
  activeShadowSpread?: string
}

/** 背景相关样式 */
export interface BwStyleActiveBackgroundModel {
  /** 背景颜色 */
  activeBackgroundColor?: string

  /** 背景图片 */
  activeBackgroundImage?: string

  /** 背景定位 X轴 */
  activeBackgroundPositionX?: string

  /** 背景定位 Y轴 */
  activeBackgroundPositionY?: string

  /** 背景大小 */
  activeBackgroundSize?: BwStyleBackgroundSizeEnum

  /** 背景大小 宽 */
  activeBackgroundSizeWidth?: string

  /** 背景大小 高 */
  activeBackgroundSizeHeight?: string

  /** 背景平铺 */
  activeBackgroundRepeat?: BwStyleBackgroundRepeatEnum

  /** 背景固定 */
  activeBackgroundAttachment?: BwStyleBackgroundAttachmentEnum
}
